#!/bin/bash

# 修复部署编译错误的脚本
# 用法: ./fix-build-errors.sh

set -e

echo "🔧 修复后端编译错误..."

# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

BACKEND_DIR="/var/www/web-notes/web-notes-backend"

if [ ! -d "$BACKEND_DIR" ]; then
    echo "错误: 后端目录不存在: $BACKEND_DIR"
    exit 1
fi

cd $BACKEND_DIR

echo -e "${YELLOW}1. 清理旧的构建文件...${NC}"
rm -rf dist/
rm -rf node_modules/

echo -e "${YELLOW}2. 重新安装依赖 (包括 devDependencies)...${NC}"
npm install

echo -e "${YELLOW}3. 验证 TypeScript 配置...${NC}"
if ! npm list typescript > /dev/null 2>&1; then
    echo "安装 TypeScript..."
    npm install --save-dev typescript
fi

if ! npm list @types/node > /dev/null 2>&1; then
    echo "安装 @types/node..."
    npm install --save-dev @types/node
fi

echo -e "${YELLOW}4. 检查 TypeScript 配置文件...${NC}"
npx tsc --showConfig

echo -e "${YELLOW}5. 尝试编译...${NC}"
npm run build

if [ $? -eq 0 ]; then
    echo -e "${GREEN}✅ 编译成功!${NC}"
    
    echo -e "${YELLOW}6. 测试编译后的文件...${NC}"
    if [ -f "dist/index.js" ]; then
        echo -e "${GREEN}✅ 主文件编译成功${NC}"
    else
        echo "❌ 主文件编译失败"
        exit 1
    fi
    
    echo -e "${YELLOW}7. 清理开发依赖 (可选)...${NC}"
    # npm prune --production
    
else
    echo "❌ 编译失败，请检查错误信息"
    exit 1
fi

echo -e "${GREEN}🎉 后端编译错误修复完成!${NC}"